package ufc.web.funcoes;

import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import ufc.web.conexaoBD.ConnectionFactory;
import ufc.web.objetos.Livros;

public class Carrinho implements Acao {
	
	public Livros consulta(int id ){
		Livros livros =new Livros();;
		
		try{
			String consulta = "select * from livro where id=?";
			Connection con = ConnectionFactory.getConnection();
			PreparedStatement ps = con.prepareStatement(consulta);
			ps.setInt(1, id);
			ResultSet res = ps.executeQuery(); 
			
			while(res.next()){
				livros.setId(res.getInt("id"));
				livros.setTitulo(res.getString("titulo"));
				livros.setAutor(res.getString("autor"));
				livros.setValor(res.getDouble("valor"));
				livros.setISBN(res.getString("ISBN"));
				
				
			}
			
			con.close();
			ps.close();
			}catch(SQLException e){
				System.out.println(e.getMessage());
			}
			
			
			return livros;
	}
	@SuppressWarnings("unchecked")
	@Override
	public void executa(HttpServletRequest request, HttpServletResponse response) {
		
		HttpSession sessao = request.getSession();
		
		ArrayList<Livros> carrinho = (ArrayList<Livros>) sessao.getAttribute("Carrinho");
		
		
		try {	
		if(carrinho == null){
			int id =Integer.parseInt(request.getParameter("id"));
			int num=Integer.parseInt(request.getParameter("numero"));
			carrinho = new ArrayList<Livros>();
			carrinho.add(consulta(id));
			sessao.setAttribute("Carrinho", carrinho);
			response.sendRedirect("Livros.jsp?id="+id+"&&numero="+num+"");
		}
			
		else if(carrinho != null){
			
			if(request.getParameter("meio").equals("add")){
				int id =Integer.parseInt(request.getParameter("id"));
				int num=Integer.parseInt(request.getParameter("numero"));
				int k;
				boolean existi=false;
				for(k=0;k<carrinho.size();k++){
					if(id == carrinho.get(k).getId()){
						existi = true;
						break;
					}
				}
				if(existi){
					carrinho.get(k).setQuantidade(carrinho.get(k).getQuantidade()+1);;
					sessao.setAttribute("Carrinho", carrinho);
					response.sendRedirect("Livros.jsp?id="+id+"&&numero="+num+"");
				}else
					
					carrinho.add(consulta(id));
					sessao.setAttribute("Carrinho", carrinho);
					response.sendRedirect("Livros.jsp?id="+id+"&&numero="+num+"");	
		}if(request.getParameter("meio").equals("rmv")){
			int numID = Integer.parseInt(request.getParameter("numID"));
			int k;
			carrinho = (ArrayList<Livros>) sessao.getAttribute("Carrinho");
			for(k=0;k<carrinho.size();k++){
				if(carrinho.get(k).getId() == numID){
					if(carrinho.get(k).getQuantidade()>1){
						carrinho.get(k).setQuantidade(carrinho.get(k).getQuantidade()-1);
						break;
					}
					else{
						carrinho.remove(k);
						break;
					}
				}
			}
			sessao.setAttribute("Carrinho", carrinho);
			response.sendRedirect("Carrinho.jsp");
			
		}
		}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

}
